//-------------------------------------------------------------------------------------------------------
// VST Plug-In
// SDK Version 2.4		$Date: 2006/11/13 09:08:27 $
//
// Vocal Remover
//
// Wtyczka usuwajaca wokal z stereofonicznych nagran muzycznych
//
//
// Filename     : vrem.h
// Created by   : SharkiFX
//
// 2010, SharkFX
//-------------------------------------------------------------------------------------------------------

#ifndef __vrem__
#define __vrem__

#include "public.sdk/source/vst2.x/audioeffectx.h" //includowanie pliku naglowkowego z SDK
#include "rbjfilter.h"  //includowanie pliku naglowkowego zwieracjacego klase filtru

//typ enumeracyjny dla idetyfikacji parametorw wtyczki

enum
{
	kLowFreq,
	kLowGain,
	kHighFreq,
	kHighGain,
	kStrength,
	kOutput,
	kNumParams
};

//-------------------------------------------------------------------------------------------------------
//glowna klasa programu
class VRem : public AudioEffectX
{
public:
	VRem (audioMasterCallback audioMaster);
	~VRem ();

	virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames);

	virtual void setProgramName (char* name);
	virtual void getProgramName (char* name);

	virtual void setParameter (VstInt32 index, float value);
	virtual float getParameter (VstInt32 index);
	virtual void getParameterLabel (VstInt32 index, char* label);
	virtual void getParameterDisplay (VstInt32 index, char* text);
	virtual void getParameterName (VstInt32 index, char* text);

	virtual bool getEffectName (char* name);
	virtual bool getVendorString (char* text);
	virtual bool getProductString (char* text);
	virtual VstInt32 getVendorVersion ();

protected:

	//zmienne dla procedury float
	float fLowFreq;
	float fHighFreq;
	float fStrength;
	float fLowGain;
	float fHighGain;
	float fOutput;
	
//deklaracje filtrow
	Rbjfiltr lp1;
	Rbjfiltr lp2;
	Rbjfiltr lp3;

	Rbjfiltr hp1;
	Rbjfiltr hp2;
	Rbjfiltr hp3;

	int sampleRate; //zmienna zawierajaca czestotliwosc probkowania

	char programName[kVstMaxProgNameLen + 1];
};

#endif
//EOF
